#ifndef DW_SYSTEM_RESOURCE_H
#	define DW_SYSTEM_RESOURCE_H

namespace dw {
	namespace system {

class IResource
{
public : //! @name Construction & destruction
	//! @{
	IResource(const std::string& name = "");
	virtual ~IResource();
	//! @}

public : //! @name State
	//! @{
	const std::string& GetName() const { return _name; }
	//! @}

public : //! @name Commands
	//! @{
	virtual void loadFromFile(const std::string& filename);
	virtual void load(std::istream& is) = 0;
	virtual void unload() = 0;
	//! @}

protected : //! @name Data
	//! @{
	std::string _name;
	bool _loaded;
	//! @}
};

	} // namespace system
} // namespace dw

#endif // !DW_SYSTEM_RESOURCE_H

